package cn.iocoder.yudao.module.written.exam.service.llm;

import cn.iocoder.yudao.module.written.exam.controller.app.writtenexam.vo.llm.LlmChatReqVO;
import cn.iocoder.yudao.module.written.exam.dal.dataobject.llm.LlmEventBase;
import reactor.core.publisher.Flux;

import javax.validation.Valid;
import java.util.List;

/**
 * 大模型聊天 Service 接口
 *
 * @author 芋道源码
 */
public interface LlmChatService {

    /**
     * 批量上传文件到大模型平台
     *
     * @param filePaths 本地文件路径列表（最多3个）
     * @return 大模型平台返回的文件ID列表
     */
    List<String> uploadFiles(List<String> filePaths);

    /**
     * 发送聊天消息（Flux流式响应）
     *
     * @param reqVO  聊天请求
     * @param userIp 用户IP
     * @param query  查询文本
     * @return Flux流式响应
     */
    Flux<LlmEventBase> sendMessage(@Valid LlmChatReqVO reqVO, String userIp, String query);

}